package gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingWorker;
import javax.swing.border.EmptyBorder;
import javax.xml.crypto.Data;

import model.DelBehandlingPakkeKlar;
import model.Lager;
import service.Service;

/**
 * 
 * @author Martin Sax, Daniel Nissen og Søren
 * 
 */
public class MainFrame extends JFrame {

	private JPanel contentPane;
	private JPanel panel;
	private JButton btnRegistrereMellemVare;
	private JButton btnOpretProduktType;
	private JPanel panel_1;
	OpretProduktType opretProduktType;
	RegistrereMellemVare registrereMellemVare;
	LagerPladsStatus lagerPladsStatus;
	RedigerProduktTyper redigerProduktTyper;
	FindVare findVare;
	LagerStatus lagerStatus;
	private JButton btnStatestik;
	private JButton btnRedigerProdukttyper;
	private JButton btnFindVare;
	Statestik statestik;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MainFrame frame = new MainFrame();
					frame.setVisible(true);

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});

	}

	/**
	 * Create the frame.
	 */
	public MainFrame() {

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1024, 760);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);

		lagerStatus = new LagerStatus(this);
		contentPane.add(lagerStatus, BorderLayout.SOUTH);

		panel = new JPanel();
		contentPane.add(panel, BorderLayout.NORTH);

		btnRegistrereMellemVare = new JButton("Registrere Mellem Vare");
		btnRegistrereMellemVare
				.addActionListener(new BtnRegistrereMellemVareActionListener());
		panel.add(btnRegistrereMellemVare);

		btnOpretProduktType = new JButton("Opret Produkt Type");
		btnOpretProduktType
				.addActionListener(new BtnOpretProduktTypeActionListener());
		panel.add(btnOpretProduktType);

		btnStatestik = new JButton("Statestik");
		btnStatestik.addActionListener(new BtnStatestikActionListener());
		panel.add(btnStatestik);

		btnFindVare = new JButton("Find vare");
		btnFindVare.addActionListener(new BtnFindVareActionListener());
		panel.add(btnFindVare);

		btnRedigerProdukttyper = new JButton("Rediger produkttyper");
		btnRedigerProdukttyper
				.addActionListener(new BtnRedigerProdukttyperActionListener());
		panel.add(btnRedigerProdukttyper);

		panel_1 = new JPanel();
		contentPane.add(panel_1, BorderLayout.CENTER);

		lagerPladsStatus = new LagerPladsStatus();
		panel_1.add(lagerPladsStatus);
		lagerPladsStatus.setVisible(false);

		opretProduktType = new OpretProduktType(this);
		panel_1.add(opretProduktType);
		opretProduktType.setVisible(false);

		redigerProduktTyper = new RedigerProduktTyper(this);
		panel_1.add(redigerProduktTyper);
		redigerProduktTyper.setVisible(false);

		findVare = new FindVare();
		panel_1.add(findVare);
		findVare.setVisible(false);

		statestik = new Statestik();
		panel_1.add(statestik);
		statestik.setVisible(false);

		registrereMellemVare = new RegistrereMellemVare();
		panel_1.add(registrereMellemVare);
		lagerStatus.runUL();
	}

	public void setVisibelity(CarlettiPanel jp) {
		opretProduktType.setVisible(false);
		lagerPladsStatus.setVisible(false);
		registrereMellemVare.setVisible(false);
		statestik.setVisible(false);
		findVare.setVisible(false);
		redigerProduktTyper.setVisible(false);
		((JPanel) jp).setVisible(true);
		jp.update();
	}

	private class BtnRegistrereMellemVareActionListener implements
			ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			setVisibelity(registrereMellemVare);
		}
	}

	private class BtnOpretProduktTypeActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			opretProduktType.setProduktType(null);
			setVisibelity(opretProduktType);

		}
	}

	private class BtnStatestikActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			setVisibelity(statestik);
		}
	}

	private class BtnFindVareActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			setVisibelity(findVare);
		}
	}

	private class BtnRedigerProdukttyperActionListener implements
			ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			setVisibelity(redigerProduktTyper);
		}
	}

	public void opretProduktType() {
		setVisibelity(registrereMellemVare);
	}

}

